package com.frost.blog.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.util.DigestUtils;

import java.util.UUID;

/**
 * 加密
 */
@Slf4j
public class SecurityUtils {
    /**
     * 加密
     * @param password
     * @return
     */
    public static String encrypt(String password) {
        String md5Str = DigestUtils.md5DigestAsHex(password.getBytes());
        String salt = UUID.randomUUID().toString().replace("-", "");
        // 密文：(盐值+明文密码)拼接的字符串进行md5加密
        String securityPassword = DigestUtils.md5DigestAsHex((salt + password).getBytes());
        // 存储在数据库中：盐值 + 密文
        return salt + securityPassword;
    }

    /**
     * 校验
     */
    public static Boolean verify(String inputPassword, String sqlPassword) {
        // sqlPassword = salt + md5(salt + password)
        if (sqlPassword == null || sqlPassword.length() != 64) {
            log.error("数据库中密码格式错误");
            return false;
        }
        String salt = sqlPassword.substring(0, 32);
        String securityPassword = DigestUtils.md5DigestAsHex((salt + inputPassword).getBytes());
        String finalPassword = salt + securityPassword;
//        if (finalPassword.equals(sqlPassword)) {
//            return true;
//        } else {
//            return false;
//        }
        return finalPassword.equals(sqlPassword);
    }
}
